#ifndef BASEGAME_H
#define BASEGAME_H

#include "GameState.h"

class BasePlayer;

class BaseGame
{
public:
  BaseGame(unsigned int numHands, unsigned int handSize, unsigned int playerHandSize);

  bool attachPlayer(BasePlayer* player);

  void nextTurn();

  bool startGame();
  bool playCard(int turnID, const Card& c, unsigned int handNum);

protected:
  bool mGameStarted;
  GameState mGameState;
  unsigned int mPlayerHandSize;
  std::vector<BasePlayer*> mPlayers;
  std::vector<CardList> mPlayerHands;
  CardList mDeck;

  unsigned int mCurrentPlayer;
  int mTurnID;

private:
  void shuffle();
  void deal();
};

#endif
